package account;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JTextArea;

/**
 * Anzeigeklasse fuer eine Tranksaktionsliste in einem Textfeld.<br>
 * Zeigt getaetigte Tranksaktionen in einer fortlaufenden Liste mit<br>
 * <ul>
 * <li>Datum
 * <li>Zeitpunkt
 * <li>Kontonummer und
 * <li>Betrag
 * </ul>
 *
 * @author Patrick Bauer
 */
public class AccountListView extends JTextArea implements Observer {

    /**
     * Setzt die das Textfeld der Liste auf "nicht-editierbar".
     */
    public AccountListView() {
        super();
        this.setEditable(false);
    }

    /**
     * Wird vom Observable aufgerufen und bekommt Daten einer Tranksaktion.<br>
     * Diese Daten werden zum Eintragen einer Transaktion in das Textfeld benutzt.
     *
     * @param o das AccountModel
     * @param arg die AccountAction
     */
    @Override
    public void update(Observable o, Object arg) {
        String actionString;
        AccountAction action = (AccountAction) arg;
        
        
        if(action.getAction() == AccountAction.RAISE){
            actionString = "Einzahlung";
        } else {
            actionString = "Auszahlung";
        }
            
        DecimalFormat twoDForm = new DecimalFormat("0.00");
        String difference = twoDForm.format(action.getDifference());
        
        SimpleDateFormat formatter = new SimpleDateFormat ("dd.MM.yyyy HH:mm ");
        Date currentTime = new Date();
        
        this.append(formatter.format(currentTime) + "---> Kontonummer 528597" + action.getAccountIndex() + " ---> " + actionString + ": " + difference + " Euro.\n");
    }
    
}
